//
//  ViewController.m
//  RYDatasourceDemo
//
//   Copyright © 2016年 AC-英特路. All rights reserved.
//  Created by JiaKang.Zhong on 16/4/22.
//

#import "ViewController.h"
#import "TDatasource.h"
#import "TCellOne.h"
#import "JGTableViewSectionModel.h"
#import "JGTableViewCellModel.h"

@interface ViewController ()

@property (weak, nonatomic) IBOutlet UITableView *tableview;
@property (nonatomic, strong) NSMutableArray *serverData;       // 服务器返回的数据
@property (nonatomic, strong) TDatasource *datasource;          // 中间人

@end

@implementation ViewController

#pragma mark -
#pragma mark - View Life Cycle

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 初始化datasource
    [self configDataSource];
    
    // 初始化tableview
    [self configTableView];

}



#pragma mark -
#pragma mark - Config Tableview
- (void)configTableView
{
    // 把_dataSource设置成_tableview的代理,以后所有代理方法都在_dataSource实现
    _tableview.delegate = _datasource;
    _tableview.dataSource = _datasource;
}

#pragma mark -
#pragma mark - Config DataSource

- (void)configDataSource
{
    // cell数据
    [self configData];

   
    __weak __typeof(self) weakSelf = self;
    
    // cell事件
    RYCellSelectedBlock cellSelectedBlock = ^(id obj){
        
        __strong __typeof(weakSelf) strongSelf = weakSelf;
        
        // cell点击事件
        [strongSelf cellSelectedWithObj:obj];
    };
    
    // 初始化dataSource
    _datasource = [[TDatasource alloc] initWithServerData:_serverData];
    _datasource.cellSelectedBlock = cellSelectedBlock;
}

- (void)configData
{
    /**
     *  服务器返回的数据  然后字典转模型。这里采取的是虚假数据
    */
    _serverData = [[NSMutableArray alloc] init];
   
    // 第一组
    JGTableViewCellModel * cellModel_1 = [JGTableViewCellModel initWithImage:[UIImage imageNamed:@"001"] Title:@"001" SubTitle:nil AccessoryImage:nil andIdentifier:NSStringFromClass([JGTableViewCellModel class])];
     JGTableViewCellModel * cellModel_2 = [JGTableViewCellModel initWithImage:[UIImage imageNamed:@"002"] Title:@"002" SubTitle:nil AccessoryImage:nil andIdentifier:NSStringFromClass([JGTableViewCellModel class])];
    JGTableViewSectionModel * sectionModel_1 = [JGTableViewSectionModel initWithItemArray:@[cellModel_1,cellModel_2].mutableCopy andHeaderTitle:@"这是第一组的头部" andFooterTitle:@"这是第一组的尾部"];
    
    // 第二组
    // 第一组
    JGTableViewCellModel * cellModel_3 = [JGTableViewCellModel initWithImage:[UIImage imageNamed:@"001"] Title:@"003" SubTitle:nil AccessoryImage:nil andIdentifier:NSStringFromClass([JGTableViewCellModel class])];
    JGTableViewCellModel * cellModel_4 = [JGTableViewCellModel initWithImage:[UIImage imageNamed:@"002"] Title:@"004" SubTitle:nil AccessoryImage:nil andIdentifier:NSStringFromClass([JGTableViewCellModel class])];
    JGTableViewCellModel * cellModel_5 = [JGTableViewCellModel initWithImage:[UIImage imageNamed:@"001"] Title:@"005" SubTitle:nil AccessoryImage:nil andIdentifier:NSStringFromClass([JGTableViewCellModel class])];
    JGTableViewCellModel * cellModel_6 = [JGTableViewCellModel initWithImage:[UIImage imageNamed:@"002"] Title:@"006" SubTitle:nil AccessoryImage:nil andIdentifier:NSStringFromClass([JGTableViewCellModel class])];
    JGTableViewSectionModel * sectionModel_2 = [JGTableViewSectionModel initWithItemArray:@[cellModel_3,cellModel_4,cellModel_5,cellModel_6].mutableCopy andHeaderTitle:@"这是第二组的头部" andFooterTitle:@"这是第二组的尾部"];
    
    [_serverData addObject:sectionModel_1];
      [_serverData addObject:sectionModel_2];

    // cell复用设置
    [_tableview registerNib:[UINib nibWithNibName:@"TCellOne" bundle:nil] forCellReuseIdentifier:NSStringFromClass([JGTableViewCellModel class])];
}



#pragma mark -
#pragma mark - Action
- (void)cellSelectedWithObj:(id)obj
{
    NSLog(@"%@",obj);
}

@end
